package net.sf.jsqlparser.expression;

import net.sf.jsqlparser.expression.operators.arithmetic.Addition;
import net.sf.jsqlparser.expression.operators.arithmetic.BitwiseAnd;
import net.sf.jsqlparser.expression.operators.arithmetic.BitwiseOr;
import net.sf.jsqlparser.expression.operators.arithmetic.BitwiseXor;
import net.sf.jsqlparser.expression.operators.arithmetic.Concat;
import net.sf.jsqlparser.expression.operators.arithmetic.Division;
import net.sf.jsqlparser.expression.operators.arithmetic.Multiplication;
import net.sf.jsqlparser.expression.operators.arithmetic.Subtraction;
import net.sf.jsqlparser.expression.operators.conditional.AndExpression;
import net.sf.jsqlparser.expression.operators.conditional.OrExpression;
import net.sf.jsqlparser.expression.operators.relational.Between;
import net.sf.jsqlparser.expression.operators.relational.EqualsTo;
import net.sf.jsqlparser.expression.operators.relational.ExistsExpression;
import net.sf.jsqlparser.expression.operators.relational.GreaterThan;
import net.sf.jsqlparser.expression.operators.relational.GreaterThanEquals;
import net.sf.jsqlparser.expression.operators.relational.InExpression;
import net.sf.jsqlparser.expression.operators.relational.IsNullExpression;
import net.sf.jsqlparser.expression.operators.relational.LikeExpression;
import net.sf.jsqlparser.expression.operators.relational.Matches;
import net.sf.jsqlparser.expression.operators.relational.MinorThan;
import net.sf.jsqlparser.expression.operators.relational.MinorThanEquals;
import net.sf.jsqlparser.expression.operators.relational.NotEqualsTo;
import net.sf.jsqlparser.schema.Column;
import net.sf.jsqlparser.statement.select.SubSelect;
import edu.fiu.cs.kdrg.sql.syntax.tree.*;

public interface ExpressionNodeVisitor {
	public Node nodeVisit(NullValue nullValue);
	public Node nodeVisit(Function function);
	public Node nodeVisit(InverseExpression inverseExpression);
	public Node nodeVisit(JdbcParameter jdbcParameter);
	public Node nodeVisit(DoubleValue doubleValue);
	public Node nodeVisit(LongValue longValue);
	public Node nodeVisit(DateValue dateValue);
	public Node nodeVisit(TimeValue timeValue);
	public Node nodeVisit(TimestampValue timestampValue);
	public Node nodeVisit(Parenthesis parenthesis);
	public Node nodeVisit(StringValue stringValue);
	public Node nodeVisit(Addition addition);
	public Node nodeVisit(Division division);
	public Node nodeVisit(Multiplication multiplication);
	public Node nodeVisit(Subtraction subtraction);
	public Node nodeVisit(AndExpression andExpression);
	public Node nodeVisit(OrExpression orExpression);
	public Node nodeVisit(Between between);
	public Node nodeVisit(EqualsTo equalsTo);
	public Node nodeVisit(GreaterThan greaterThan);
	public Node nodeVisit(GreaterThanEquals greaterThanEquals);
	public Node nodeVisit(InExpression inExpression);
	public Node nodeVisit(IsNullExpression isNullExpression);
	public Node nodeVisit(LikeExpression likeExpression);
	public Node nodeVisit(MinorThan minorThan);
	public Node nodeVisit(MinorThanEquals minorThanEquals);
	public Node nodeVisit(NotEqualsTo notEqualsTo);
	public Node nodeVisit(Column tableColumn);
	public Node nodeVisit(SubSelect subSelect);
	public Node nodeVisit(CaseExpression caseExpression);
	public Node nodeVisit(WhenClause whenClause);
	public Node nodeVisit(ExistsExpression existsExpression);
	public Node nodeVisit(AllComparisonExpression allComparisonExpression);
	public Node nodeVisit(AnyComparisonExpression anyComparisonExpression);
	public Node nodeVisit(Concat concat);
	public Node nodeVisit(Matches matches);
	public Node nodeVisit(BitwiseAnd bitwiseAnd);
	public Node nodeVisit(BitwiseOr bitwiseOr);
	public Node nodeVisit(BitwiseXor bitwiseXor);

}
